package com.lagou.algorithmus;

import java.util.LinkedList;

/**
 * 子串
 */
public class AlgorithmusSubArray {

    public static void main(String[] args) {
        int[] arr = {1,1,1};
        System.out.println(subarraySum(arr, 3));
    }

    /**
     * 给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
     * 子数组是数组中元素的连续非空序列。
     */
    public static int subarraySum(int[] nums, int k) {
        if (nums.length == 0) {
            return 0;
        }
        int index = 0;
        int result = 0;
        LinkedList<Integer> queue = new LinkedList<>();
        while (index < nums.length) {
            queue.add(nums[index]);
            int temp = 0;
            for (Integer value : queue) {
                temp += value;
            }
            if (temp == k) {
                result++;
            } else if (temp > k) {
                while (true) {
                    Integer poll = queue.poll();
                    if (poll != null) {
                        temp -= poll;
                    }
                    if (temp == k) {
                        result++;
                    }
                    if (temp < k) {
                        break;
                    }
                }
            }
            index++;
        }
        return result;
    }
}
